/*
 *  This file is part of Bracket Properties
 *  Copyright 2011-2013 David R. Smith
 *  All Rights Reserved
 *
 */
package asia.redact.bracket.properties.serializer;


/**
 * Classes implementing this interface can encapsulate the tasks associated with rendering
 * a java object graph into a serialized form.
 * 
 * @author Dave
 *
 */
public interface Renderer {
	
	public static String INITIAL_KEY_NAME = "INITIAL_KEY";
	public static String NEXT_KEY_NAME = "NEXT_KEY";

	public void renderInitialKeyId(Token root);
	
	public void renderLastKeyId(long last);
	
	public void renderLoadable(Token token);
	
	public void renderImmediateMapValue(Token parent, Token child, int ct);
	
	public void renderIndirectMapValue(Token parent, Token child, int ct);
	
	public void renderImmediate(Token parent, Token child);
	
	public void renderIndirect(Token parent, Token child);
	
	public void renderImmediateMapKey(Token parent, Token child, int ct);
	
	public void renderIndirectMapKey(Token parent, Token child, int ct);
	
	public void renderParentClass(Token parentToken);
	
	public void renderValue(Token parentToken);
	
	public void renderImmediateListItem(Token parent, Token child, int count);
	
	public void renderIndirectListItem(Token parent, Token child, int count);
	
	public void renderCharArray(Token token);
	
	public void renderByteArray(Token token);
	
	public void renderIntArray(Token token);
	
	public void renderLongArray(Token token);
	
	public void renderDoubleArray(Token token);
	
	public void renderBooleanArray(Token token);
	
	public void renderFloatArray(Token token);
	
	public void renderShortArray(Token token);
	
	public void renderClassMap();

}
